//编程要求:
//		电报内容经过加密后使用字符输出流存储在指定的文件中
//		如果文件不存在，则创建文件
//		使用字符输入流从文件中分别读取密文和明文的内容并显示出来
//		利用异常处理机制处理可能发生的错误
//		注意：在对字符加密时采用了异或（^q）的简单字符加密处理，解密时也要进行逐个字符异或（^q）的处理。
//
//		测试输入：
//		今晚10点发动总攻
//
//		预期输出：
//		密文：
//		亻昫@A烈厠務恊敊
//		明文：
//		今晚10点发动总攻


package step1;

import java.io.*;
import java.util.Arrays;
import java.util.Random;

public class SortArray {
	public static void main(String[] args) {
		// 创建保存整型数据的数组(数组大小10)
    	int[] num = new int[10];
		// 给数组赋随机值，取值范围1~100
//		Random r = new Random();
		for (int i = 0; i < num.length; i++) {
//			num[i] = r.nextInt(100);
			num[i] = 1+(int)(Math.random()*100);
		}
//		for (int i = 0; i < 10; i++) {
//			System.out.println(num[i]);
//		}
		// 将数组元素按有小到大顺序排列
		Arrays.sort(num);
		//冒泡排序
//		for (int i = 0; i < 9; i++) {
//			for (int j = 0; j < 9 - i; j++) {
//				if (num[j] > num[j + 1]) {
//					int temp = num[j];
//					num[j] = num[j + 1];
//					num[j + 1] = temp;
//				}
//			}
//		}
		try {
			// 创建数据保存文件，如果文件不存在，重新创建
			File file = new File("d:\\num.txt");
			if(!file.exists()) {
				file.createNewFile();
			}
			// 创建FileOutputStream和DataOutputStream 输出流
			FileOutputStream fout = new FileOutputStream(file);
			DataOutputStream dout = new DataOutputStream(fout);
			// 利用输出流向文件中写入数组数据
			for (int i = 0; i < num.length; i++) {
				dout.writeInt(num[i]);
			}
			// 关闭输出流
			dout.close();
			// 创建FileInputStream和DataInputStream 输入流
			FileInputStream fin = new FileInputStream(file);
			DataInputStream din = new DataInputStream(fin);
			// 利用输入流从文件读取数据并输出
			int a = 0;
			for (int i = 0; i < num.length; i++) {
				a = din.readInt();
				if(i != (num.length-1)) {
					System.out.print(a + "<");
				}else {
					System.out.print(a);
				}

			}
			// 关闭输入流
			din.close();
		} catch (IOException e) {
			// 异常处理
			System.out.println("读写发生异常");
		}
	}
}